package ar.com.psicosoft.model.psicosoft_admin;

import java.io.Serializable;

import javax.persistence.*;

import java.sql.Timestamp;

/**
 * The persistent class for the sede database table.
 * 
 */
@Entity
@Table(name = "sede", schema = "psicosoft_admin")
@NamedQueries({
		@NamedQuery(name = "Sede.buscarPorId", query = "SELECT s FROM Sede s WHERE s.idSede = :idSede"),
		@NamedQuery(name = "Sede.buscarPorDescripcionSede", query = "SELECT s FROM Sede s WHERE s.descripcionSede = :descripcionSede"),
		@NamedQuery(name = "Sede.buscarSedesDeEmpresa", query = "SELECT s FROM Sede s WHERE s.empresa.idEmpresa = :idEmpresa ORDER BY s.descripcionSede"),
		@NamedQuery(name = "Sede.eliminarSedePorId", query = "DELETE FROM Sede e WHERE e.idSede = :idSede"), })
public class Sede implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name = "sec_sede", sequenceName = "psicosoft_admin.sec_sede", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec_sede")
	@Column(name = "\"idSede\"", unique = true, nullable = false, insertable = false, updatable = false)
	private Integer idSede;

	@Column(nullable = true)
	private Timestamp baja;

	@Column(nullable = false)
	private Timestamp creacion;

	@Column(name = "\"descripcionSede\"", nullable = false, length = 50)
	private String descripcionSede;

	@Column(length = 50)
	private String direccion;

	// bi-directional many-to-one association to Empresa
	@ManyToOne(fetch = FetchType.LAZY, targetEntity = Empresa.class)
	@JoinColumn(name = "\"idEmpresa\"", nullable = false, insertable = true, updatable = false)
	private Empresa empresa = null;

	public Sede() {
	}

	/**
	 * @param descripcionSede
	 * @param direccion
	 * @param creacion
	 */
	public Sede(String descripcionSede, String direccion, Timestamp creacion) {
		super();
		this.descripcionSede = descripcionSede;
		this.direccion = direccion;
		this.creacion = creacion;
	}

	public Integer getIdSede() {
		return this.idSede;
	}

	public void setIdSede(Integer idSede) {
		this.idSede = idSede;
	}

	public Timestamp getBaja() {
		return this.baja;
	}

	public void setBaja(Timestamp baja) {
		this.baja = baja;
	}

	public Timestamp getCreacion() {
		return this.creacion;
	}

	public void setCreacion(Timestamp creacion) {
		this.creacion = creacion;
	}

	public String getDescripcionSede() {
		return this.descripcionSede;
	}

	public void setDescripcionSede(String descripcionSede) {
		this.descripcionSede = descripcionSede;
	}

	public String getDireccion() {
		return this.direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public Empresa getEmpresa() {
		return this.empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((descripcionSede == null) ? 0 : descripcionSede.hashCode());
		result = prime * result
				+ ((direccion == null) ? 0 : direccion.hashCode());
		result = prime * result + ((idSede == null) ? 0 : idSede.hashCode());
		return result;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Sede other = (Sede) obj;
		if (descripcionSede == null) {
			if (other.descripcionSede != null)
				return false;
		} else if (!descripcionSede.equals(other.descripcionSede))
			return false;
		if (direccion == null) {
			if (other.direccion != null)
				return false;
		} else if (!direccion.equals(other.direccion))
			return false;
		if (idSede == null) {
			if (other.idSede != null)
				return false;
		} else if (!idSede.equals(other.idSede))
			return false;
		return true;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Sede [idSede=" + idSede + ", descripcionSede="
				+ descripcionSede + ", direccion=" + direccion + ", creacion="
				+ creacion + ", baja=" + baja + "]";
	}

}